﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace btmerc.API.Schemas.Interfaces
{
    public interface IForce
    {
        int CurrentBalance { get; }
        string HiringHall { get; }
        List<Jumpship> Jumpships { get; }

        IEnumerable<ForceCharacter> Personnel { get; }
        IEnumerable<ForceCharacter> CombatPersonnel { get; }
        Character Commander { get; }
        IEnumerable<Vehicle> GetVehicles();
        IEnumerable<Vehicle> GetVehicles(TroopType type);
        IEnumerable<Troop> GetTroops(TroopType type);
        Quality GetAverageCombatQuality();
        TroopType GetMainForceType();
        Quality GetMainForceCombatQuality();
        IEnumerable<ExecutedContract> GetContractHistory();
        Dropships GetOwnedDropships();
        Dropships GetAuxillaryDropships();
        TroopCount GetTroopTransportNeeded();
        TroopCount GetTotalTroopTransportCapacity();

        ushort GetTechnicalSupportNeeded(TroopType type);
        ushort GetTechnicalSupportAvailable(TroopType type);
        ushort GetMedicalSupportNeeded();
        ushort GetMedicalSupportAvailable();
        ushort GetAdminSupportNeeded();
        ushort GetAdminSupportAvailable();
        ushort GetLengthOfDebt();
        int GetContractResultCount(ContractResult resultType);
        double GetTotalSalary(IEra era, SalaryModifiers salaryModifiers);
        double GetTotalMaintenanceCosts(IEra era, MaintenanceCosts maintenanceCosts);
    }
}
